class Person:
    def __init__(self,name,age,gender):
        self.name=name
        self.age=age
        self.gender=gender

    def introduce(self):
        return f"大家好，我叫{self.name}，今年刚满{self.age}岁，是{self.gender}生"
    
class Student(Person):
    def __init__(self, name, age, gender,student_id,grade):
        super().__init__(name, age, gender)
        self.student_id=student_id
        self.grade=grade
        self.courses=[]
    
    def introduce(self):
        return f"大家好，我叫{self.name}，是{self.grade}年级的学生，学号是{self.student_id}"
    
    def enroll_course(self,course):
        if course not in self.courses:
            course.add_student(self)
            return f"{self.name}成功选修了{course.name}课m程"
        return f"{self.name}已经选修了{course.name}课程"
    
    def list_courses(self):
        if self.courses:
            course_names=[course.name for course in self.courses]
            return f"{self.name}选修的课程有{",",(course_names)}课程"
        return f"{self.name}没有选修任何课程"

class Administrator(Person):
    def __init__(self, name, age, admin_id):
        super().__init__(name, age)
        self.admin_id = admin_id
        self.managed_grades = []  
    
    def add_grade(self, grade_name):
        if grade_name not in self.managed_grades:
            self.managed_grades.append(grade_name)
            return f"管理员 {self.name} 开始管理 {grade_name}"
        return f"管理员 {self.name} 已经在管理 {grade_name}"
    
    def show_managed_grades(self):
        #显示管理的所有年级"
        if self.managed_grades:
            return f"{self.name}管理的年级：{', '.join(self.managed_grades)}"
        return f"{self.name}还没有管理任何年级"
    
    def assign_course_to_grade(self, grade, course_name):
        #为整个年级安排课程
        if grade.add_course(course_name):
            return f"成功为{grade.grade_name}年级安排课程：{course_name}"
        return f"{grade.grade_name}年级已经有{course_name}课程了"


class Grade:
    #年级类，管理同一年级的学生和课程
    def __init__(self, grade_name):
        self.grade_name = grade_name
        self.students = []  # 该年级的学生列表
        self.courses = []   # 该年级的课程列表
    
    def add_student(self, student):
        #添加学生到年级
        if student not in self.students:
            self.students.append(student)
            return f"{student.name} 已加入 {self.grade_name} 年级"
        return f"{student.name} 已经在 {self.grade_name} 年级中"
    
    def add_course(self, course_name):
        #为年级添加课程
        if course_name not in self.courses:
            self.courses.append(course_name)
            return True
        return False
    
    def show_students(self):
        #显示年级所有学生
        if self.students:
            student_names = [student.name for student in self.students]
            return f"{self.grade_name}年级的学生：{', '.join(student_names)}"
        return f"{self.grade_name}年级还没有学生"
    
    def show_courses(self):
        #显示年级所有课程
        if self.courses:
            return f"{self.grade_name}年级的课程：{', '.join(self.courses)}"
        return f"{self.grade_name}年级还没有课程"


        